package treeset;

import java.util.TreeSet;
/*
* TreeSet底层用的红黑树的结构
*
* 存入TreeSet的元素需要指定比较规则: 自然排序 或 比较器排序
* 自然排序规则:
*  1.存入集合的元素需要实现Comparable接口
*  2.重写public int compareTo(T o)方法
*     该方法代表比较规则
*     例如:Integer实现了Comparable接口,重写public int compareTo(T o)方法,代表Integer可比较
*  3.compareTo方法决定了TreeSet中存入元素的顺序,简单原理如下:
*   a.如果compareTo方法返回负数,说明新添加的元素比集合中的元素小, 存左边
*   b.如果compareTo方法返回0,说明新添加的元素与集合中的元素相同, 不存
*   c.如果compareTo方法返回正数,说明新添加的元素比集合中的元素大, 存右边
* */
public class TreeSetDemo02 {
    public static void main(String[] args) {
        TreeSet<Integer> ts = new TreeSet<>();

        ts.add(5);
        ts.add(1);
        ts.add(7);
        ts.add(3);
        ts.add(5);

        System.out.println(ts);//[1, 3, 5, 7]
    }
}


/**
 * Integer类实现了Comparable接口,重写了compareTo
 *    public int compareTo(Integer anotherInteger) {
 *         return compare(this.value, anotherInteger.value);
 *     }
 *      public static int compare(int x, int y) {
 *         return (x < y) ? -1 : ((x == y) ? 0 : 1);
 *     }
 *
 */